package com.mall.common.service;

import java.util.List;

import com.mall.common.domain.manage.Menu;
import com.mall.common.domain.manage.Operate;
import com.mall.common.domain.manage.Role;

/**
 * Service接口 - 角色
 */
public interface RoleService extends BaseService<Role, Long> {

	/**
	 * 根据劫色获取操作权限(包含非授权的权限)
	 * @param roleIds
	 * @param menu
	 * 			菜单
	 * @param isDiaplayInToolBar
	 * 			是否显示在工具栏
	 * @return
	 */
	public abstract List<Operate> getPrivOperate(String[] roleIds, Menu menu, Boolean isDiaplayInToolBar);

	public abstract List<Menu> getPrivMenu(String[] roleIds);

	/**
	 * 根据角色获取授权的操作
	 * @param roleIds
	 * @return
	 */
	public List<Operate> getAuthOperate(Long userId);
	
	/**
	 * 获取授权的操作, 如果menu为空，则获取所有
	 * @return
	 */
	public abstract List<Operate> getAutOperate(Menu menu);

	/**
	 * 获取普通的操作, 如果menu为空，则获取所有
	 * @return
	 */
	public abstract List<Menu> getNormalOperate(Menu menu);

	public abstract Role editRoleMenu(Role entity, Long[] menuIds, Long[] operateIds);

	/**
	 * 根据角色的ID获取角色列表
	 * @param ids
	 * @return
	 */
	public abstract List<Role> getRolesByIds(Long[] ids);

	/**
	 * 过滤掉给定角色的ID，即获取不在ID列表中的角色
	 * @param ids
	 * @return
	 */
	public abstract List<Role> getRolesFilterByIds(Long[] ids);
	
}
